package dominio;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import utils.DateUtils;
import dto.CotizacionTO;
import dto.ItemCotizacionTO;

public class Cotizacion {
	private Integer id;
	private Date fecha;
	private int termino;
	private SolicitudCotizacion solicitud;
	private List<ItemCotizacion> items;

	public Cotizacion() {
		items = new ArrayList<ItemCotizacion>();
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public int getTermino() {
		return termino;
	}

	public void setTermino(int termino) {
		this.termino = termino;
	}

	public SolicitudCotizacion getSolicitud() {
		return solicitud;
	}

	public void setSolicitud(SolicitudCotizacion solicitud) {
		this.solicitud = solicitud;
	}

	public List<ItemCotizacion> getItems() {
		return items;
	}

	public void agregarItem(ItemCotizacion item) {
		items.add(item);
	}

	public boolean esValida() {
		return DateUtils.before(fecha, termino);
	}

	public CotizacionTO getDTO() {
		CotizacionTO dto = new CotizacionTO();
		dto.setId(id);
		dto.setFecha(fecha);
		dto.setTermino(termino);
		dto.setSolicitud(solicitud.getDTO());
		for (ItemCotizacion i : items)
			dto.agregarItem(i.getDTO());
		return dto;
	}

	public static Cotizacion fromDTO(CotizacionTO dto) {
		if (dto == null)
			return null;
		Cotizacion c = new Cotizacion();
		c.setId(dto.getId());
		c.setFecha(dto.getFecha());
		c.setTermino(dto.getTermino());
		c.setSolicitud(SolicitudCotizacion.fromDTO(dto.getSolicitud()));
		for (ItemCotizacionTO i : dto.getItems())
			c.agregarItem(ItemCotizacion.fromDTO(i));
		return c;
	}
}